#ifndef __VLOG_SINGLETON_H__
#define __VLOG_SINGLETON_H__

namespace vlog
{

template <typename T> class Singleton
{
    public:
    static T* GetInstance()
    {
        static T v;
        return &v;
    }

    private:
    Singleton() = delete;
    Singleton(const Singleton&) = delete;
    Singleton(Singleton&&) = delete;

    Singleton& operator=(const Singleton&) = delete;
    Singleton& operator=(Singleton&&) = delete;
};

} // namespace vlog

#endif